도커 시작하기


Docker

  • 도커는 서비스 운영 환경을 묶어서 손쉽게 배포하고 실행하는 경량 컨테이너 기술

1. 도커란 ?

  1. 복잡한 리눅스 애플리케이션을 컨테이너로 묶어서 실행할 수 있음
  2. 개발, 테스트, 서비스 환경을 하나로 통일하여 효율적으로 관리할 수 있기 때문
  3. 컨테이너(이미지)를 전세계 사람들과 공유
  4. 컨테이너는 가상화보다 훨씬 가벼운 기술

2. 가상 머신

  1. 가상 머신은 컴퓨터 안에서 컴퓨터를 만들어내기 위한 것
  2. 서버 자체를 가상 머신에 집어넣어서 돌림 - 각종 서버 프로그램, DB 등을 설치하여 애플리케이션이나 웹사이트 실행
  3. 미리 구축한 가상 머신 이미지를 여러 서버에 복사하여 실행하면 이미지 하나로 서버를 계속 만들어낼 수 있음
  4. 가상화 기술을 이용하여 서버임대해주는 서비스가 클라우드 서비스

    • 하드웨어 성능이 좋아져서 100개의 서버를 올릴 수 있는 서버 스펙 등을 남는 성능을 임대해주는 것

3. 가상 머신의 문제점

  1. 항상 대두되는 문제

    • 가상 머신은 완전한 컴퓨터 - 항상 게스트 OS를 설치해야 함 (일일이 다 설치를 해야하나?)
    • 이미지 안에 OS가 포함되기 때문에 이미지 용량이 커짐

      • 네트워크로 가상화 이미지를 주고 받는건 부담
    • 오픈소스 가상화 소프트웨어는 OS 가상화에만 주력 - 배포와 관리 기능이 부족
    • 가상 머신의 성능 문제가 있다 보니 리눅스 컨테이너가 나옴


리눅스 컨테이너

컨테이너 안에 가상 공간을 만들지만 실행 파일을 호스트에서 직접 실행
※ 리눅스 커널의 Cgroupsnamespeces가 제공하는 기술

해당 기능은 도커가 나오기 전부터 리눅스에 있던 기술이다.

1. 도커의 특징

  1. 도커는 게스트 OS를 설치하지 않음

    • 이미지에 서버 운영을 위한 프로그램과 라이브러리만 격리해서 설치
    • 이미지 용량이 크게 줄어듦
    • 호스트와 OS 자원을 공유
  2. 도커는 이미지 생성배포에 특화
  3. 이미지 버전 관리도 제공하고 중앙 저장소이미지를 올리고 받을 수 있음(Docker Hub)
  4. 다양한 API를 제공하여 원하는 만큼 자동화 가능 - 개발과 서버 운영에 매우 유용

2. 도커의 성능

  • 도커는 하드웨어 가상화 계층이 없음

    • 메모리 접근, 파일 시스템, 네트워크 전송 속도가 가상 머신에 비해 월등히 빠름
    • 호스트와 도커 컨테이너 사이의 성능 차이가 크지 않음

3. 도커 이미지

  1. 이미지는 서비스 운영에 필요한 서버 프로그램, 소스 코드, 컴파일된 실행 파일을 묶은 형태
  2. 컨테이너는 이미지를 실행한 상태!

    • 이미지는 객체, 컨테이너는 인스턴스
    • 이미지로 여러 개의 컨테이너를 만들 수 있음
    • 운영체제로 치면 이미지는 실행 파일이고 컨테이너는 프로세스

4. 도커의 이미지 처리 방식

  • 도커는 이미지의 바뀐 부분을 어떻게 관리?

    • 유니온 파일 시스템 형식 (바뀐 부분만 관리해서 베이스와 합쳐줌)
    • 도커는 베이스(ubuntu 등) 이미지에서 바뀐 부분만 이미지로 생성
    • 컨테이너로 실행할 때는 베이스 이미지와 바뀐 부분을 합쳐서 실행
    • 각 이미지는 의존 관계 형성

5. 지금까지의 서버 환경

  1. 지금까지는 물리 서버를 직접 운영 했음

    • 호스팅 또는 IDC 코로케이션 서비스 사용
  2. 가상화가 발전하면서 클라우드 환경으로 변화

    • 코드를 통해 가능하기 때문에

6. 클라우드 환경

  • 서버 세팅과 배포는 어떻게?

    배포 이후 업데이트 등을 여러번 해야하는가 등의 문제

    • Immutable Infrastructure라는 패러다임이 나옴
    • 호스트 OS와 서비스 운영 환경(서버 프로그램, 소스코드, 컴파일 된 바이너리)을 분리
    • 서비스가 업데이트되면 운영 환경 자체를 변경하지 않고, 이미지를 새로 생성하여 배포

참고 사이트

http://pyrasis.com/docker.html

https://www.slideshare.net/pyrasis/docker-fordummies-44424016?from_action=save


위로 올라가기💨

Hello, I'm@nickhealthy
개발자를 꿈꾸고, 파이썬과 클라우드에 관심이 많은 비전공자

Github